﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.ComponentModel;
using System.Diagnostics;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using BLL.BusinessClasses;

namespace WebSite.Administrador
{
    public partial class ControlPanel : System.Web.UI.Page
    {
        const int ERROR_FILE_NOT_FOUND = 2;
        const int ERROR_ACCESS_DENIED = 5;

        //private static List<Contacto> ContactosDeEmpresa = new List<Contacto>();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.Session["UsuarioDeSesion"] == null || !(this.Session["UsuarioDeSesion"] is UsuarioAdministrativo))
            {
                this.Response.Redirect(@"~/General/Principal.aspx");
                return;
            }
            if (!(this.Page.IsPostBack))
            {
                this.DarBienvenida();
            }
        }
        private void DarBienvenida()
        {
            ((Label)(this.Master.FindControl("Label_Bienvenida"))).Text = "Bienvenido <u> Admin </u>";
        }
        protected void Button_LogOff_Click(object sender, EventArgs e)
        {
            this.Session["UsuarioDeSesion"] = null;

            this.Response.Redirect("../General/Principal.aspx");
        }

        // Poblar Methods
        private void PoblarGridView_Empresas()
        {
            var EmpresasSource = from e in BLL.BusinessClasses.Empresa.GetAllEmpresas()
                                 select new
                                 {
                                     ID = e.ID,
                                     RNC = e.RNC,
                                     Nombre = e.Nombre,
                                     Activa = this.Traducir(e.SiActiva),
                                     Direccion = e.Direccion,
                                     Descripcion = e.Descripcion,
                                     FechaSolicitud = e.FechaSolicitud,
                                     FechaCreacion = e.FechaCreacion,
                                     Pais = e.Pais.Descripcion,
                                     Foto = e.Logo,
                                     Creador = e.UsuarioCreador,
                                 };

            this.GridView_Empresas.DataSource = EmpresasSource;
            this.GridView_Empresas.DataBind();

            foreach (GridViewRow item in this.GridView_Empresas.Rows)
            {
                if (item.Cells[2].Text == "No")
                    item.BackColor = System.Drawing.Color.FromArgb(0xCC, 0x0, 0x0);
            }
        }
        private void PoblarGridView_EmpresasActivas()
        {
            var EmpresasSource = from emp in BLL.BusinessClasses.Empresa.GetAllEmpresas()
                                 where (emp.SiActiva == true)
                                 select new
                                 {
                                     ID = emp.ID,
                                     RNC = emp.RNC,
                                     Nombre = emp.Nombre,
                                     Activa = this.Traducir(emp.SiActiva),
                                     Direccion = emp.Direccion,
                                     Descripcion = emp.Descripcion,
                                     FechaSolicitud = emp.FechaSolicitud,
                                     FechaCreacion = emp.FechaCreacion,
                                     Pais = emp.Pais.Descripcion,
                                     Foto = emp.Logo,
                                     Creador = emp.UsuarioCreador,
                                 };

            //if (EmpresasSource.Count() == 0)
            //{
            //    this.Label_ErrorNoEmpresasActivas.Visible = true;
            //}
            //else
            //{
            //    this.Label_ErrorNoEmpresasActivas.Visible = false;
            //}

            this.GridView_EmpresasActivas.DataSource = EmpresasSource;
            this.GridView_EmpresasActivas.DataBind();
        }
        protected void PoblarGridView_Vacantes()
        {
            this.GridView_Vacantes.DataSource = new BLL.BusinessClasses.Empresa(Convert.ToInt32(this.GridView_EmpresasActivas.SelectedValue)).Vacantes;
            this.GridView_Vacantes.DataBind();

#warning POR AKI!

            //foreach (GridViewRow item in this.GridView_Vacantes.Rows)
            //{
            //    //#warning Que es esto? WIP? lo comente para compilar -oliver
            //    if (item.Cells[2].Text.ToLower() == "no")
            //        item.BackColor = System.Drawing.Color.FromArgb(0xCC, 0x0, 0x0);
            //}

            //this.GridView_Vacantes.Visible = true;
        }
        protected void LlenarParametros()
        {
            this.TextBox_ParametroModificarTiempoVacante.Text = BLL.BusinessClasses.UsuarioAdministrativo.GetTiempoVidaVacante();
        }

        protected void Esconder_ContenidoPagina()
        {
            if (this.Panel_EmpresasRegistradas.Visible)
            {
                this.Panel_EmpresasRegistradas.Visible = false;
                this.Button_MostrarPanelEmpresasRegistradas.Text = "▼";
            }

            if (this.Panel_AgregarEmpresa.Visible)
            {
                this.Panel_AgregarEmpresa.Visible = false;
                this.Button_MostrarPanelEmpresa.Text = "▼";
            }

            if (this.Panel_Vacantes.Visible)
            {
                this.Button_MostrarPanelVacantes.Text = "▼";
                this.Panel_Vacantes.Visible = false;
            }

            if (this.Panel_Habilidades.Visible)
            {
                this.Panel_Habilidades.Visible = false;
                this.Button_MostrarPanelHabilidades.Text = "▼";
            }

            if (this.Panel_Reportes.Visible)
            {
                this.Panel_Reportes.Visible = false;
                this.Button_MostrarPanelReportes.Text = "▼";
            }

            if (this.Panel_Parametros.Visible)
            {
                this.Panel_Parametros.Visible = false;
                this.Button_MostrarPanelParametros.Text = "▼";
            }

            if (this.Panel_Documentos.Visible)
            {
                this.Button_MostrarPanelDocumentos.Text = "▼";
                this.Panel_Documentos.Visible = false;
            }
        }
        
        // Click Event Handlers
        protected void Button_MostrarPanelEmpresasRegistradas_Click(object sender, EventArgs e)
        {
            Esconder_ContenidoPagina();
            this.Panel_EmpresasRegistradas.Visible = !(this.Panel_EmpresasRegistradas.Visible);
            this.Panel_DatosEmpresasRegistradas.Visible = false;
            this.GridView_Empresas.SelectedIndex = -1;

            if (this.Panel_EmpresasRegistradas.Visible)
            {
                this.PoblarGridView_Empresas();
                this.Button_MostrarPanelEmpresasRegistradas.Text = "▲";
            }
            else this.Button_MostrarPanelEmpresasRegistradas.Text = "▼";
        }

        protected void Button_MostrarPanelEmpresa_Click(object sender, EventArgs e)
        {
            Esconder_ContenidoPagina();
            this.Panel_AgregarEmpresa.Visible = !(this.Panel_AgregarEmpresa.Visible);
            if (this.Panel_AgregarEmpresa.Visible)
            {
                this.Button_MostrarPanelEmpresa.Text = "▲";
            }
            else this.Button_MostrarPanelEmpresa.Text = "▼";
        }

        protected void Button_MostrarPanelVacantes_Click(object sender, EventArgs e)
        {
            Esconder_ContenidoPagina();
            this.Panel_Vacantes.Visible = !(this.Panel_Vacantes.Visible);
            if (this.Panel_Vacantes.Visible)
            {
                this.Button_MostrarPanelVacantes.Text = "▲";
                this.PoblarGridView_EmpresasActivas();
            }
            else
            {
                this.Button_MostrarPanelVacantes.Text = "▼";
                this.Panel_VacantesDeEmpresa.Visible = false;

                this.GridView_Vacantes.SelectedIndex = -1;
                this.GridView_EmpresasActivas.SelectedIndex = -1;
            }
        }

        protected void Button_MostrarPanelHabilidades_Click(object sender, EventArgs e)
        {
            Esconder_ContenidoPagina();
            this.Panel_Habilidades.Visible = !(this.Panel_Habilidades.Visible);
            if (this.Panel_Habilidades.Visible)
            {
                this.Button_MostrarPanelHabilidades.Text = "▲";
            }
            else this.Button_MostrarPanelHabilidades.Text = "▼";
        }

        protected void Button_MostrarPanelDocumentos_Click(object sender, EventArgs e)
        {
            Esconder_ContenidoPagina();
            this.Panel_Documentos.Visible = !(this.Panel_Documentos.Visible);
            if (this.Panel_Documentos.Visible)
            {
                this.Button_MostrarPanelDocumentos.Text = "▲";
            }
            else this.Button_MostrarPanelDocumentos.Text = "▼";
        }

        protected void Button_MostrarPanelReportes_Click(object sender, EventArgs e)
        {
            Esconder_ContenidoPagina();
            this.Panel_Reportes.Visible = !(this.Panel_Reportes.Visible);
            if (this.Panel_Reportes.Visible)
            {
                this.Button_MostrarPanelReportes.Text = "▲";
            }
            else this.Button_MostrarPanelReportes.Text = "▼";
        }

        protected void Button_MostrarPanelParametros_Click(object sender, EventArgs e)
        {
            Esconder_ContenidoPagina();
            this.Panel_Parametros.Visible = !(this.Panel_Parametros.Visible);
            if (this.Panel_Parametros.Visible)
            {
                this.Button_MostrarPanelParametros.Text = "▲";
                LlenarParametros();
            }
            else this.Button_MostrarPanelParametros.Text = "▼";
        }

        protected void Button_ActivarEmpresa_Click(object sender, EventArgs e)
        {
            try
            {
                //if(this.GridView_Empresas.SelectedRow.Cells[].gridview){}

                if (new BLL.BusinessClasses.Empresa(Convert.ToInt32(this.GridView_Empresas.SelectedValue)).FechaCreacion.HasValue)
                {
                    ((UsuarioAdministrativo)this.Session["UsuarioDeSesion"]).ReactivarEmpresa(Convert.ToInt32(this.GridView_Empresas.SelectedValue));
                }
                else 
                {
                    ((UsuarioAdministrativo)this.Session["UsuarioDeSesion"]).AceptarSolicitudDeEmpresa(Convert.ToInt32(this.GridView_Empresas.SelectedValue));
                }

                this.GridView_Empresas.SelectedIndex = -1;

                this.PoblarGridView_Empresas();

                this.Label_MensajeErrorActivacionEmpresa.Text = "La empresa se ha activado exitosamente";
                this.Label_MensajeErrorActivacionEmpresa.Visible = true;
            }
            catch (Exception)
            {
                this.Label_MensajeErrorActivacionEmpresa.Text = "Intente nuevamente activar esta empresa en unos minutos";
                this.Label_MensajeErrorActivacionEmpresa.Visible = true;
            }
        }
        protected void Button_DesactivarEmpresa_Click(object sender, EventArgs e)
        {
            try
            {
                ((UsuarioAdministrativo)this.Session["UsuarioDeSesion"]).DesactivarEmpresa(Convert.ToInt32(this.GridView_Empresas.SelectedValue));

                this.GridView_Empresas.SelectedIndex = -1;

                this.PoblarGridView_Empresas();

                this.Label_MensajeErrorActivacionEmpresa.Text = "La empresa se ha desactivado exitosamente";
                this.Label_MensajeErrorActivacionEmpresa.Visible = true;
            }
            catch (Exception)
            {
                this.Label_MensajeErrorActivacionEmpresa.Text = "Intente nuevamente desactivar esta empresa en unos minutos";
                this.Label_MensajeErrorActivacionEmpresa.Visible = true;
            }
        }
        protected void Button_AgregarEmpresa_Click(object sender, EventArgs e)
        {
            try
            {
                BLL.BusinessClasses.Empresa NuevaEmpresa = new BLL.BusinessClasses.Empresa(this.TextBox_Nombre.Text.Trim(),
                                                                                           this.TextBox_RNC.Text.Trim(),
                                                                                           this.TextBox_Direccion.Text.Trim(),
                                                                                           this.TextBox_Descripcion.Text.Trim(),
                                                                                           this.TextBox_Contacto.Text,
                                                                                           this.TextBox_CargoContacto.Text,
                                                                                           ((UsuarioAdministrativo)this.Session["UsuarioDeSesion"]).ID);

                NuevaEmpresa.Pais = new Pais(Convert.ToInt32(DropDownList_Pais.SelectedValue));
                ((UsuarioAdministrativo)this.Session["UsuarioDeSesion"]).CrearNuevaEmpresa(NuevaEmpresa);
                
                if (this.TextBox_Telefono.Text.Trim() != String.Empty)
                {
                    NuevaEmpresa.AgregarContacto(BLL.BusinessClasses.Contacto.GetIDByTipoContactoDescripcion("Telefono"),
                                                 this.TextBox_Telefono.Text.Trim());

                        //NuevaEmpresa = new BLL.BusinessClasses.Empresa(NuevaEmpresa.RNC);
                        //NuevaEmpresa.AgregarContacto(Contacto.GetIDByTipoContactoDescripcion("Telefono"),
                        //    TextBox_Telefono_1.Text + "-" + TextBox_Telefono_2.Text + "-" + TextBox_Telefono_3.Text);
                }
                if (this.TextBox_EMail.Text.Trim() != String.Empty)
                {
                    NuevaEmpresa.AgregarContacto(BLL.BusinessClasses.Contacto.GetIDByTipoContactoDescripcion("Email"),   
                                                 this.TextBox_EMail.Text.Trim());
                }

                        //NuevaEmpresa = new BLL.BusinessClasses.Empresa(NuevaEmpresa.RNC);
                        //NuevaEmpresa.AgregarContacto(Contacto.GetIDByTipoContactoDescripcion("Email"),
                        //    TextBox_EMail.Text);

                this.Label_MensajeErrorAgregarEmpresa.Text = "La empresa ha sido agregada con exito";
                this.Label_MensajeErrorAgregarEmpresa.Visible = true;
            }
            catch (Exception)
            {
                this.Label_MensajeErrorAgregarEmpresa.Text = "Verifique si la empresa ya esta registrada. De no ser asi, intente nuevamente en unos minutos";
                this.Label_MensajeErrorAgregarEmpresa.Visible = true;
            }

                /*try
            {
                BLL.BusinessClasses.Empresa NuevaEmpresa = new BLL.BusinessClasses.Empresa(this.TextBox_Nombre.Text.Trim(),
                                                                                           this.TextBox_RNC.Text.Trim(),
                                                                                           this.TextBox_Direccion.Text.Trim(),
                                                                                           this.TextBox_Descripcion.Text.Trim(),
                                                                                           this.TextBox_Contacto.Text.Trim(),
                                                                                           this.TextBox_CargoContacto.Text.Trim());
                                
                NuevaEmpresa.Pais = new Pais(Convert.ToInt32(DropDownList_Paises.SelectedValue));
                NuevaEmpresa.Insertar();
                
                NuevaEmpresa.AgregarContacto(BLL.BusinessClasses.Contacto.GetIDByTipoContactoDescripcion("Telefono"),                    
                                             this.TextBox_Telefono.Text.Trim());
                
                if (this.TextBox_EMail.Text.Trim() != null) 
                {
                    NuevaEmpresa.AgregarContacto(BLL.BusinessClasses.Contacto.GetIDByTipoContactoDescripcion("Email"),
                                                 this.TextBox_EMail.Text.Trim());                    
                }
                
                this.Label_NotificacionRegistro.Visible = true;
            }                
            catch (Exception)
            {
                this.Label_MensajeErrorAgregarEmpresa.Visible = true;
            }*/
        }

        protected void Button_ActivarVacante_Click(object sender, EventArgs e)
        {
            BLL.BusinessClasses.Vacante VacanteAActivar = new BLL.BusinessClasses.Vacante(Convert.ToInt32(this.GridView_Vacantes.SelectedValue));
            VacanteAActivar.SiActiva = true;
            VacanteAActivar.FechaCierre = Vacante.GetNewFechaCierre();
            VacanteAActivar.Actualizar();

            this.PoblarGridView_Vacantes();

            this.GridView_Vacantes.SelectedIndex = -1;
        }
        protected void Button_DesactivarVacante_Click(object sender, EventArgs e)
        {
            BLL.BusinessClasses.Vacante VacanteADesactivar = new BLL.BusinessClasses.Vacante(Convert.ToInt32(this.GridView_Vacantes.SelectedValue));
            VacanteADesactivar.SiActiva = false;
            VacanteADesactivar.FechaCierre = DateTime.Now;
            VacanteADesactivar.Actualizar();

            this.PoblarGridView_Vacantes();

            this.GridView_Vacantes.SelectedIndex = -1;
        }

        protected void Button_EliminarHabilidad_Click(object sender, EventArgs e)
        {
            try
            {
                ((UsuarioAdministrativo)this.Session["UsuarioDeSesion"]).EliminarHabilidad(Convert.ToInt32(this.DropDownList_HabilidadesDeSistema.SelectedValue));

                this.DropDownList_HabilidadesDeSistema.SelectedIndex = 0;

                this.Button_OrganizarPorPalabra_Click(null, null);
            }
            catch (Exception)
            {
                this.Label_MensajeErrorHabilidadEliminar.Text = "Intente eliminar esta habilidad luego";
            }
        }
        protected void Button_OrganizarPorFecha_Click(object sender, EventArgs e)
        {
            //DropDownList_HabilidadesDeSistema.AppendDataBoundItems = false;
            this.DropDownList_HabilidadesDeSistema.Items.Clear();
            this.DropDownList_HabilidadesDeSistema.Items.Add(new ListItem("[Seleccione una habilidad]", "0"));

            HabilidadLinqDataSource.OrderBy = "FechaCreacion desc";
            //HabilidadLinqDataSource.DataBind();
            DropDownList_HabilidadesDeSistema.DataBind();
        }
        protected void Button_OrganizarPorPalabra_Click(object sender, EventArgs e)
        {
            //DropDownList_HabilidadesDeSistema.AppendDataBoundItems = false;
            this.DropDownList_HabilidadesDeSistema.Items.Clear();
            this.DropDownList_HabilidadesDeSistema.Items.Add(new ListItem("[Seleccione una habilidad]", "0"));

            HabilidadLinqDataSource.OrderBy = "Descripcion";
            //HabilidadLinqDataSource.DataBind();
            DropDownList_HabilidadesDeSistema.DataBind();
        }
        protected void Button_NuevaHabilidad_Click(object sender, EventArgs e)
        {
            try
            {
                new Habilidad(this.TextBox_NuevaHabilidad.Text.Trim()).Insertar();

                this.DropDownList_HabilidadesDeSistema.SelectedIndex = 0;

                this.Button_OrganizarPorPalabra_Click(null, null);               
            }
            catch (Exception)
            {
                this.Label_MensajeErrorNuevaHabilidad.Text = "No puede agregar esta habilidad";
            }
        }

        protected void Button_AgregarDocumento_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.TextBox_AñoInicio.Text == "" || this.TextBox_MesInicio.Text == "" || this.TextBox_DiaInicio.Text == "")
                    new Documento(this.TextBox_NombreDocumento.Text.Trim(),
                                  this.TextBox_CuerpoDocumento.Text.Trim(),
                                  this.DropDownList_Destinatarios.SelectedItem.Text,
                                  Convert.ToInt32(this.TextBox_TiempoEnvio.Text.Trim())).Insertar();
                else
                    new Documento(this.TextBox_NombreDocumento.Text.Trim(),
                             this.TextBox_CuerpoDocumento.Text.Trim(),
                             this.DropDownList_Destinatarios.SelectedItem.Text,
                             Convert.ToInt32(this.TextBox_TiempoEnvio.Text.Trim()),
                             new DateTime(Convert.ToInt32(this.TextBox_AñoInicio.Text),
                                 Convert.ToInt32(this.TextBox_MesInicio.Text),
                                 Convert.ToInt32(this.TextBox_DiaInicio.Text))).Insertar();

                this.Label_MensajeErrorDocumento.Text = "El documento ha sido agregado exitosamente";
            }
            catch (Exception)
            {
                this.Label_MensajeErrorDocumento.Text = "No se ha podido agregar el documento. Intente nuevamente en unos minutos";
            }
        }
        protected void Button_ModificarDocumento_Click(object sender, EventArgs e)
        {
            try
            {
                Documento DocumentoToUpdate = new Documento(Convert.ToInt32(this.DropDownList_Documentos.SelectedValue));

                DocumentoToUpdate.Nombre = this.TextBox_NombreDocumento.Text.Trim();
                DocumentoToUpdate.TiempoEnvio = Convert.ToInt32(this.TextBox_TiempoEnvio.Text.Trim());
                DocumentoToUpdate.Destinatario = this.DropDownList_Destinatarios.SelectedItem.Text;
                DocumentoToUpdate.Contenido = this.TextBox_CuerpoDocumento.Text.Trim();

                if (this.TextBox_AñoInicio.Text != "" || this.TextBox_MesInicio.Text != "" || this.TextBox_DiaInicio.Text != "")
                    DocumentoToUpdate.FechaInicio = new DateTime(Convert.ToInt32(this.TextBox_AñoInicio.Text),
                                 Convert.ToInt32(this.TextBox_MesInicio.Text),
                                 Convert.ToInt32(this.TextBox_DiaInicio.Text));

                DocumentoToUpdate.Actualizar();

                this.Label_MensajeErrorDocumento.Text = "El documento ha sido modificado exitosamente";
            }
            catch (Exception)
            {
                this.Label_MensajeErrorDocumento.Text = "No se ha podido modificar el documento. Intente nuevamente en unos minutos";
            }
        }

        protected void Button_GenerarReporte_Click(object sender, EventArgs e)
        {
            try
            {
                Process myProcess = new Process();
                // Get the path that stores user documents.
                //string myDocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);

                myProcess.StartInfo.FileName = Environment.CurrentDirectory + "\\LibroDeReportes.xlsx";
                //myProcess.StartInfo.Verb = "Print";
                //myProcess.StartInfo.CreateNoWindow = true;
                myProcess.Start();
            }
            catch (Win32Exception W32ex)
            {
                if (W32ex.NativeErrorCode == ERROR_FILE_NOT_FOUND)
                {
                    this.Label_MensajeErrorGenerarReporte.Text = W32ex.Message;
                }

                else if (W32ex.NativeErrorCode == ERROR_ACCESS_DENIED)
                {
                    // Note that if your word processor might generate exceptions
                    // such as this, which are handled first.
                    this.Label_MensajeErrorGenerarReporte.Text = W32ex.Message;
                }
            }
        }

        protected void Button_ModificarTiempoVacante_Click(object sender, EventArgs e)
        {
            try
            {
                System.Convert.ToInt32(TextBox_ParametroModificarTiempoVacante.Text.Trim());
                UsuarioAdministrativo.ActualizarTiempoVidaVacante(TextBox_ParametroModificarTiempoVacante.Text);
                ConfigurationManager.AppSettings["TiempoDeVidaVacante"] = TextBox_ParametroModificarTiempoVacante.Text.Trim();
            }
            catch (Exception)
            {
                this.Label_ErrorModificarParametros.Text = "Existe un error en los nuevos parametros. Por favor revise";
            }
        } 


        // Helper Methods
        protected void GridView_DatosEmpresa_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (((string)DataBinder.Eval(e.Row.DataItem, "Foto")) != null)
                {
                    ((Image)e.Row.FindControl("Image_LogoEmpresa")).ImageUrl = ((string)DataBinder.Eval(e.Row.DataItem, "Foto"));
                }
                else
                {
                    ((Image)e.Row.FindControl("Image_LogoEmpresa")).ImageUrl = "~\\Pictures\\CompanyPictures\\DefaultCompanyPic.png";
                }
            }
        }

        protected void GridView_Empresas_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (new BLL.BusinessClasses.Empresa(Convert.ToInt32(this.GridView_Empresas.SelectedValue)).SiActiva)
            {
                this.Button_ActivarEmpresa.Enabled = false;
                this.Button_DesactivarEmpresa.Enabled = true;
            }
            else
            {
                this.Button_ActivarEmpresa.Enabled = true;
                this.Button_DesactivarEmpresa.Enabled = false;
            }

            this.Panel_DatosEmpresasRegistradas.Visible = true;
            //this.Button_DesactivarAplicacion.Enabled = true;

            string ParameterValue = new BLL.BusinessClasses.Empresa(Convert.ToInt32(this.GridView_Empresas.SelectedValue)).ID.ToString();

            //this.LinqDataSource_DatosVacanteAplicacionActiva.Where = "ID == @ID_Vacante";
            this.LinqDataSource_Empesa.WhereParameters.Clear();
            this.LinqDataSource_Empesa.WhereParameters.Add(new Parameter("ID_Empresa", DbType.Int32, ParameterValue));

            ////this.LinqDataSource_DatosVacanteHabilidadesAplicacionActiva.Where = "ID_Vacante == @ID_Vacante";
            //this.LinqDataSource_Empesa.WhereParameters.Clear();
            //this.LinqDataSource_Empesa.WhereParameters.Add(new Parameter("ID_Empresa", DbType.Int32, ParameterValue));

            ////this.LinqDataSource_DatosVacanteEspecialidadesAplicacionActiva.Where = "ID_Vacante == @ID_Vacante";
            //this.LinqDataSource_Empesa.WhereParameters.Clear();
            //this.LinqDataSource_Empesa.WhereParameters.Add(new Parameter("ID_Empresa", DbType.Int32, ParameterValue));        

        }

        protected void GridView_EmpresasActivas_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.PoblarGridView_Vacantes();
            this.Panel_VacantesDeEmpresa.Visible = true;
        }

        protected void GridView_Vacantes_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (((bool)DataBinder.Eval(e.Row.DataItem, "SiActiva")) == false)
                {
                    e.Row.BackColor = System.Drawing.Color.FromArgb(0xCC, 0x0, 0x0);
                    //((Image)e.Row.FindControl("Image_LogoEmpresa")).ImageUrl = ((string)DataBinder.Eval(e.Row.DataItem, "Foto"));
                }
                //else
                //{
                //    ((Image)e.Row.FindControl("Image_LogoEmpresa")).ImageUrl = "~\\Pictures\\CompanyPictures\\DefaultCompanyPic.png";
                //}
            }
        }

        protected void GridView_Vacantes_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (new BLL.BusinessClasses.Vacante(Convert.ToInt32(this.GridView_Vacantes.SelectedValue)).SiActiva)
            {
                this.Button_ActivarVacante.Enabled = false;
                this.Button_DesactivarVacante.Enabled = true;
            }
            else
            {
                this.Button_ActivarVacante.Enabled = true;
                this.Button_DesactivarVacante.Enabled = false;
            }
        } 

        protected void DropDownList_HabilidadesDeSistema_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Button_EliminarHabilidad.Enabled = true;

            if (this.DropDownList_HabilidadesDeSistema.SelectedValue == "0")
            {
                this.Button_EliminarHabilidad.Enabled = false;
            }
        }

        protected void TextBox_NuevaHabilidad_TextChanged(object sender, EventArgs e)
        {
            if (this.TextBox_NuevaHabilidad.Text.Trim() != String.Empty)
            {
                this.Button_NuevaHabilidad.Enabled = true;
            }
            else
            {
                this.Button_NuevaHabilidad.Enabled = false;
            }
        }

        protected void DropDownList_Documentos_SelectedIndexChanged(object sender, EventArgs e)
        {
            Documento Doc;

            if (this.DropDownList_Documentos.SelectedValue != "0")
            {
                Doc = new Documento(Convert.ToInt32(this.DropDownList_Documentos.SelectedValue));

                this.TextBox_CuerpoDocumento.Text = Doc.Contenido;
                this.TextBox_NombreDocumento.Text = Doc.Nombre;

                if (Doc.FechaInicio != null)
                {
                    this.TextBox_AñoInicio.Text = Convert.ToString(Doc.FechaInicio.Value.Year);
                    this.TextBox_MesInicio.Text = Convert.ToString(Doc.FechaInicio.Value.Month);
                    this.TextBox_DiaInicio.Text = Convert.ToString(Doc.FechaInicio.Value.Day);
                }

                if (Doc.TiempoEnvio != null)
                {
                    this.TextBox_TiempoEnvio.Text = Doc.TiempoEnvio.ToString();
                }

                if (Doc.Destinatario == "Empresas")
                {
                    this.DropDownList_Destinatarios.SelectedValue = "1";
                }
                else if (Doc.Destinatario == "Egresados")
                {
                    this.DropDownList_Destinatarios.SelectedValue = "2";
                }
                else if (Doc.Destinatario == "Todos")
                {
                    this.DropDownList_Destinatarios.SelectedValue = "3";
                }

                this.Button_ModificarDocumento.Enabled = true;
                this.Button_AgregarDocumento.Enabled = false;
            }
            else
            {
                Doc = null;
                this.TextBox_CuerpoDocumento.Text = "";
                this.TextBox_NombreDocumento.Text = "";
                this.TextBox_TiempoEnvio.Text = "";
                this.DropDownList_Destinatarios.SelectedValue = "0";
                this.Button_ModificarDocumento.Enabled = false;
                this.Button_AgregarDocumento.Enabled = true;
            }
        }

        // Page Expressions Methods
        protected object EvaluateIfDireccionEqualsNull_Empresas()
        {
            return (Eval("Direccion") == null) ? "<span class=\"LetraRoja\">No Especificada</span>" : Eval("Direccion");
        }
        protected object EvaluateIfDescripcionEqualsNull_Empresas()
        {
            return (Eval("Descripcion") == null) ? "<span class=\"LetraRoja\">No Especificada</span>" : Eval("Descripcion");
        }
        protected object EvaluateIfFechaCreacionEqualsNull_Empresas()
        {
            return ((Eval("FechaCreacion")) == null) ? "<span class=\"LetraRoja\">Aun no esta activa</span>" : Eval("FechaCreacion");
        }
        protected object EvaluateIfUsuarioCreadorEqualsNull_Empresas()
        {
            return (((string)Eval("UsuariosAdministrativo.UserName")) == null) ? "<span class=\"LetraRoja\">No Hay Creador</span>" : Eval("UsuariosAdministrativo.UserName");
        }

        protected string Traducir(bool BoolValue)
        {
            if (BoolValue) return "Si";
            else return "No";
        }     
    }
}
